$(function () {

    layui.use('layer', function(){
        var layer = layui.layer;
    });
    getUserInfo(1);
})


//填充表单数据
function getUserInfo(pageNO) {
    $.post("/user/findByItem","pageNO="+pageNO+"&name="+$("#userName").val(),function (pageInfo) {
        var userStr = "";
        var roleStr = "";
        for(var i=0;i<pageInfo.list.length;i++){
            var obj = pageInfo.list[i];
            for(var j=0;j<obj.userRole.length;j++){
                var roleObj = obj.userRole[j];
                roleStr += roleObj.name;
                if(j<obj.userRole.length -1){
                    roleStr+=","
                }
            }
            userStr += `<tr><td>${obj.code}</td><td>${obj.pwd}</td>
                         <td>${roleStr}</td><td>${obj.name}</td>
        <td><a class="layui-btn layui-btn-danger" href="javascript:delUser(${obj.id})">删除</a>
        <a class="layui-btn layui-btn-warm" href="javascript:update(${obj.id})">修改</a></td></tr>`;
            roleStr="";
        }
        $("#userTableBody").html(userStr);

        if(pageNO == 1){
            layui.use('laypage', function(){
                var laypage = layui.laypage;

                //执行一个laypage实例
                laypage.render({
                    elem: 'cutPageDiv' //注意，这里的 test1 是 ID，不用加 # 号
                    ,count: pageInfo.total, //数据总数，从服务端得到
                    limit:5,
                    jump:function (obj,first) {
                        if(!first){
                            getUserInfo(obj.curr);
                        }
                    }
                });
            });
        }

    });
}

/**
 * 删除用户
 * @param id 用户id
 */
function delUser(id) {
    $.post("/user/delUser","id="+id,function (info) {
        if(info == "ok"){
            location.href="/html/roleMent/users.html";
        }
    });
}

/**
 * 添加用户弹出
 */
function add() {
    layer.open({
        title:"添加用户", // 标题
        type:1,//弹出层类别，1表示页面层
        shadeClose:true,//点击遮罩，关闭对话框
        skin: 'layui-layer-rim', //加上边框
        area: ['720px', '540px'], //宽高
        anim:4,
        content: $("#addDiv")
    });
    //获取角色,并返回角色选中的数组
    var intArray = getRoles($("#role"),$("#root"));


}

/**
 * 添加用户
 */
function addUser(intArray) {
    
    if($("#root").html() == ""){
        alert("请先勾选权限");
        return;
    }
    if(checkName() == false){
        alert("请输入正确的数据");
        return;
    }

    $.post("/user/addUser",$("#addForm").serialize(),function (info) {
        if(info == "no"){
            alert("该用户名已存在");
        }else{
            alert("添加成功");
        }
        location.reload();
    });

}

/**
 * 验证用户添加填写数据是否正确
 */
function checkName() {
    $("#codeSpan").html("");
    $("#nameSpan").html("");
    var pattern = /[a-zA-Z\u4E00-\u9FA5]{1,6}$/;

    if(pattern.test($("#code").val()) == false ){
        $("#codeSpan").html("请输入1到6位的汉字或字母");
        return false;
    }
    if(pattern.test($("#name").val()) == false){
        $("#nameSpan").html("请输入1到6位的汉字或字母");
        return false;
    }
}

/**
 * 修改用户
 */
function update(id) {
    layer.open({
        title:"添加用户", // 标题
        type:1,//弹出层类别，1表示页面层
        shadeClose:true,//点击遮罩，关闭对话框
        skin: 'layui-layer-rim', //加上边框
        area: ['720px', '540px'], //宽高
        anim:4,
        content: $("#updateDiv")
    });

    //给隐藏表单id赋值
    $("#id").val(id);
    //获取角色
    getRoles($("#updateRole "),$("#rootSpan"))

    //填充表单元素
    $.post("/user/findById","id="+id,function (user) {
        $("#updateCode").html(user.code);
        $("#updateName").html(user.name);
        var str="222";
        for(var i=0;i<user.userRole.length;i++){
            var roleObj = user.userRole[i];
            str=document.getElementById(roleObj.id);
            $(str).prop('checked',true);
            str="";
        }
        getIntArray($("#rootSpan"));
    });


}

/**
 * 修改用户信息
 */
function updateUser() {
    if($("#rootSpan").html() == ""){
        alert("请先勾选权限");
    }else {


        $.post("/user/update", $("#updateForm").serialize(), function () {
        });
        location.reload();
    }
}

/**
 * 获取所有角色，并填充角色复选框,并添加点击事件
 */
function getRoles(role,root) {
    //获取所有角色
    $.post("/role/findAll","pageNo=1",function (roleList) {
        var str ="拥有角色："
        for(var i=0;i<roleList.length;i++){
            var roleObj=roleList[i];
            str+=`<input type="checkbox" id="${roleObj.id}" name="roleIdArray" value="${roleObj.id}">${roleObj.name}`;
        }
        role.html(str);
    });

    //给角色添加点击事件
    role.click(function () {
        //填充对应的权限
        getIntArray(root);
    })
}

/**
 * 点击取消关闭弹出层
 */
function closeLayer() {
    layer.closeAll();
    location.reload();
}


/**
 * 获取选中的角色数组
 */
function getIntArray(rootObj) {
    var intArray = [];

    $("input[type=checkbox]:checked").each(function () {
        intArray.push($(this).val());
    })
    // for(var i=0;i<intArray.length;i++){
    //     alert(intArray[i]);
    // }
    if(intArray.length >=1 ){
        var str=""
        $.post("/role/findRoots","ids="+intArray,function (roots) {

            for(var i=0;i<roots.length;i++){
                var obj = roots[i];
                str += `${obj.name},`;
            }
            rootObj.html(str);
            str="";
        });

    }
    else {
        rootObj.html("");
    }

    return intArray;
}